package com.sjms._08_结构_适配器模式;

/**
 * 适配器模式，类似（亡羊补牢）
 * 已经存在的类（功能已经开发完成了），与新需求的功能相似，但是略有差异
 * 当已经存在的方法无法满足现有需求，需要对不同调用者做出微小调整，此时可以使用适配器模式
 * 适配器模式，会产生新的类和方法：比如 ，电源适配器（手机、电脑、空调），内部结构基本一致，只是转后的产出的电压不同
 * 适配器模式，适配现有的类与方法，最终产出的是满足需求的新的接口方法
 * 特点：复用现有的类
 * <p>
 * 实现流程：
 * 被适配的类，组合进适配器内部
 * 适配器实现接口内部方法，调用被适配的方法后，进行逻辑修改
 * 然后用户与通过 适配器接口+不通的适配器实现， 进行交互
 * <p>
 * 举例：容器取水
 * 一盆水，通过水漏适配器，取出指定毫升的水量
 */

public class _Test {

    public static void main(String[] args) {

        Container container = new Adapter(new BasinWater(1000));
        System.out.println("1000ml,通过小容器取出，" + container.little() + "ml");
        System.out.println("1000ml,通过中等容器取出，" + container.middle() + "ml");
        System.out.println("1000ml,通过大容器取出，" + container.big() + "ml");

        Container container1 = new Adapter(new BasinWater(5000));

    }
}
